package com.baofu.paycore.dal.mapper;


import com.baofu.paycore.dal.mapper.base.GenericMapper;
import com.baofu.paycore.dal.model.TransferDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 转账记录操作
 */
public interface TransferMapper extends GenericMapper<TransferDO> {

    /**
     * 分页获取记录
     *
     * @param bean 转账对象
     * @param beginPage 开始位置
     * @param pageSize 页面显示数
     * @return 转账记录对象
     */
    List<TransferDO> selectTransferByPage(@Param("bean")      TransferDO bean,
                                          @Param("startDate") Date startDate, @Param("endDate") Date endDate,
                                          @Param("beginPage") int beginPage,
                                          @Param("pageSize")  int pageSize);

    /**
     * 获取对象数量
     * @param bean 转账对象
     * @return 数量
     */
    int selectTransferCount(@Param("bean")TransferDO bean,@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 根据支付号获取
     *
     * @param payNo 支付号
     * @return 转账单
     */
    TransferDO selectByPayNo(String payNo);

    /**
     * 根据支付号获取
     *
     * @param requestOrderNo 请求订单号
     * @param requestBizNo   请求流水号
     * @return 转账单
     */
    TransferDO selectByOrderNo(@Param("requestOrderNo") String requestOrderNo,
                               @Param("requestBizNo")   String requestBizNo,
                               @Param("requestSystem")  String requestSystem);

    /**
     * 根据支付号获取
     *
     * @param requestOrderNo 请求订单号
     * @param requestBizNo   请求流水号
     * @return 转账单
     */
    TransferDO selectByOrderNoAndBizNo(@Param("requestOrderNo") String requestOrderNo,
                                       @Param("requestBizNo")   String requestBizNo,
                                       @Param("requestSystem")  String requestSystem,
                                       @Param("requestDate")    Date requestDate);
}